/**
 * @name 验证pad还是pc
 */
export const vaildatePc = function() {
    const userAgentInfo = navigator.userAgent;

    const Agents = [
        "Android",
        "iPhone",

        "SymbianOS",
        "Windows Phone",

        "iPad",
        "iPod",
    ];

    let flag = true;

    for (var v = 0; v < Agents.length; v++) {
        if (userAgentInfo.indexOf(Agents[v]) > 0) {
            flag = false;

            break;
        }
    }

    return flag;
};

/**
 * @name 邮箱验证
 */

export function validateEmail(email) {
    const re =
        /^(([^<>()\\[\]\\.,;:\s@"]+(\.[^<>()\\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

    return re.test(email);
}
/**
 * @name 电话号码
 */
export function isPhone(s) {
    return /^((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(166)|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9]))\d{8}$/.test(
        str
    );
}

/**
 * @name 判断是否为URL地址
 */
export function isUrl(s) {
    return /[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/i.test(
        str
    );
}

/**
 * 判断姓名是否正确
 */

export function validatename(name) {
    var regName = /^[\u4e00-\u9fa5]{2,4}$/;

    if (!regName.test(name)) return false;

    return true;
}

/**
 * 判断是否为整数
 */

export function validatenum(num, type) {
    let regName = /[^\d.]/g;

    if (type == 1) {
        if (!regName.test(num)) return false;
    } else if (type == 2) {
        regName = /[^\d]/g;

        if (!regName.test(num)) return false;
    }

    return true;
}

/**
 * 判断是否为小数
 */

export function validatenumord(num, type) {
    let regName = /[^\d.]/g;

    if (type == 1) {
        if (!regName.test(num)) return false;
    } else if (type == 2) {
        regName = /[^\d.]/g;

        if (!regName.test(num)) return false;
    }

    return true;
}

/**
 * 判断是否为空
 */

export function validatenull(val) {
    if (typeof val == "boolean") {
        return false;
    }

    if (typeof val == "number") {
        return false;
    }

    if (val instanceof Array) {
        if (val.length == 0) return true;
    } else if (val instanceof Object) {
        if (JSON.stringify(val) === "{}") return true;
    } else {
        if (
            val == "null" ||
            val == null ||
            val == "undefined" ||
            val == undefined ||
            val == ""
        )
            return true;

        return false;
    }

    return false;
}
/**
 * 判断身份证号码
 */

export function cardid(code) {
    let list = [];

    let result = true;

    let msg = "";

    var city = {
        11: "北京",

        12: "天津",

        13: "河北",

        14: "山西",

        15: "内蒙古",

        21: "辽宁",

        22: "吉林",

        23: "黑龙江 ",

        31: "上海",

        32: "江苏",

        33: "浙江",

        34: "安徽",

        35: "福建",

        36: "江西",

        37: "山东",

        41: "河南",

        42: "湖北 ",

        43: "湖南",

        44: "广东",

        45: "广西",

        46: "海南",

        50: "重庆",

        51: "四川",

        52: "贵州",

        53: "云南",

        54: "西藏 ",

        61: "陕西",

        62: "甘肃",

        63: "青海",

        64: "宁夏",

        65: "新疆",

        71: "台湾",

        81: "香港",

        82: "澳门",

        91: "国外 ",
    };

    if (!validatenull(code)) {
        if (code.length == 18) {
            if (!code || !/(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(code)) {
                msg = "证件号码格式错误";
            } else if (!city[code.substr(0, 2)]) {
                msg = "地址编码错误";
            } else {
                //18位身份证需要验证最后一位校验位

                code = code.split("");

                //∑(ai×Wi)(mod 11)

                //加权因子

                var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];

                //校验位

                var parity = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2, "x"];

                var sum = 0;

                var ai = 0;

                var wi = 0;

                for (var i = 0; i < 17; i++) {
                    ai = code[i];

                    wi = factor[i];

                    sum += ai * wi;
                }

                if (parity[sum % 11] != code[17]) {
                    msg = "证件号码校验位错误";
                } else {
                    result = false;
                }
            }
        } else {
            msg = "证件号码长度不为18位";
        }
    } else {
        msg = "证件号码不能为空";
    }

    list.push(result);

    list.push(msg);

    return list;
}